<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="https://cdn.bootcss.com/vue/2.6.11/vue.min.js"></script>
</head>
<body>
    <div id="app">
      
        <foo :kk="msg" :qq="'abcd'"></foo>
    </div>   
    
    <template id="t1">
        <div>
            Vue子组件 <br>
            ++ {{kk}} {{qq}} ++ <br>
            -- {{msg}} --
        </div>
    </template>

    <script>
        /*
            我们已经知道，父子组件直接是不能直接相互访问对方的属性和方法的！
            该例子，就是讲解，子组件如何才能访问到父组件的属性和方法！(这里先不讨论父如何访问字的属性和方法)


            1. 子组件如何访问父组件的属性
                我们已经知道，子组件也是一个Vue的实例，也可以拥有自己的属性和方法。
                子组件的属性有2个来源，其一就是通过data来指定的，其二就是通过props来指定的。
                问题是，data定义的属性，是直接可以指定出属性值的，而props指定的属性，没有值！
                那么props指定的属性，如何才能确定属性值呢？ 通过子组件的标记来传！ 如何子组件的
                标记中传的是父组件的属性，那么子组件就能使用父组件的属性值了。

            2. 子组件如何访问父组件的方法

        */        
        var app = new Vue({
            el: "#app",
            data: {
                msg: "父组件的msg"
            },
            components: {
                "foo": {
                    template: "#t1",
                    props: ['kk', 'qq'],
                    data() {
                        return {
                            msg: "子组件的msg"
                        }
                    }
                }
            }
        });
    </script>
</body>
</html>